﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace caedisi.Common
{
    /// <summary>
    /// constant used in the app
    /// </summary>
    public class Constant
    {
        public static string KeyDefaultRadiusVisibility = "DefaultRadiusVisibility";
        public static string KeyDefaultRadiusContamination = "DefaultRadiusContamination";
        public static string KeyDefaultImmunityTime = "DefaultImmunityTime";
        public static string KeyDefaultNewCellularAutomataWidth = "DefaultNewCellularAutomataWidth";
        public static string KeyDefaultNewCellularAutomataHeight = "DefaultNewCellularAutomataHeight";
    }

    /// <summary>
    /// enum used in the app
    /// </summary>
    public enum EnumCAError
    {
        //System Error
        ErrNetworkDown = 1,
        ErrSQLServerDown = 2,
        ErrLoadingDataFromServer = 3,
        ErrConcurrencyErrorModified = 4,
        ErrConcurrencyErrorDeleted = 5,
        ErrDataValidationError = 6,
        ErrGeneralServerError = 7,
        ErrUnknownServerError = 8

        //Custom Error
    }

    public enum EnumCellularAutomataParametersEditMode
    {
        New,
        Edit,
        Define,
        View
    }

    public enum EnumInverterParametersEditMode
    {
        New,
        Edit,
        View
    }

    public enum EnumCellStateType
    {
        Generic = 1,
        Absent = 2,
        Contaminated = 3,
        Decontaminated = 5,
        Decontaminating = 6
    }

    /// <summary>
    /// The enum of all possible neighbourhood
    /// </summary>
    public enum EnumCellularAutomataNeighbourLocation
    {
        TopLeft,
        Top,
        TopRight,
        Left,
        Right,
        BottomLeft,
        Bottom,
        BottomRight
    }

    /// <summary>
    /// 
    /// </summary>
    public enum EnumConditionEndOfSimulation
    {
        StateIsReached = 1,
        NumberOfStepsIsReached = 2,
        Infinite = 3
    }

    /// <summary>
    /// To verify if the current simulatin is on Play or on Pause
    /// </summary>
    public enum EnumSimulationExecutionStatus
    {
        Play,
        Pause,
    }
}
